using System;
using System.Collections.Generic;
using System.Text;
using System.Xml.Schema;
using System.Xml.Serialization;

namespace R2ML
{
    public class ProducedAction
    {
        private InvokeActionExpression _invokeActionExpression;

        [System.Xml.Serialization.XmlElementAttribute("InvokeActionExpression")]
        public InvokeActionExpression invokeActionExpression
        {
            get
            {
                return _invokeActionExpression;
            }
            set
            {
                _invokeActionExpression = value;
            }
        }

        private AssignActionExpression _assignActionExpression;

        [System.Xml.Serialization.XmlElementAttribute("AssignActionExpression")]
        public AssignActionExpression assignActionExpression
        {
            get
            {
                return _assignActionExpression;
            }
            set
            {
                _assignActionExpression = value;
            }
        }

        [XmlType(Namespace = "http://www.rewerse.net/I1/2006/R2ML")]
        [XmlRoot("AssignActionExpression", Namespace = "http://www.rewerse.net/I1/2006/R2ML")]
        public class AssignActionExpression
        {
            [System.Xml.Serialization.XmlArray("arguments")]
            [System.Xml.Serialization.XmlArrayItem("TypedLiteral")]
            public TypedLiteral[] arguements;

            [System.Xml.Serialization.XmlArray("contextArgument")]
            [System.Xml.Serialization.XmlArrayItem("objectVariable")]
            public ObjectVariable[] contextArguement;

            [System.Xml.Serialization.XmlAttribute("propertyID", Namespace = "http://www.rewerse.net/I1/2006/R2ML", Form = XmlSchemaForm.Qualified)]
            public String propertyID;
        }

        [XmlType(Namespace = "http://www.rewerse.net/I1/2006/R2ML")]
        [XmlRoot("InvokeActionExpression", Namespace = "http://www.rewerse.net/I1/2006/R2ML")]
        public class InvokeActionExpression
        {
            [System.Xml.Serialization.XmlArray("arguments")]
            [System.Xml.Serialization.XmlArrayItem("TypedLiteral")]
            public TypedLiteral[] arguements;

            [System.Xml.Serialization.XmlArray("contextArgument")]
            [System.Xml.Serialization.XmlArrayItem("objectVariable")]
            public ObjectVariable[] contextArguement;

            [System.Xml.Serialization.XmlAttribute("operationID", Namespace = "http://www.rewerse.net/I1/2006/R2ML", Form = XmlSchemaForm.Qualified)]
            public String operationID;
        }
    }

    ///<R2ML>
    ///<r2ml:producedAction>
    ///  <r2ml:InvokeActionExpression r2ml:operationID="Message.show">
    ///    <r2ml:arguments>
    ///      <r2ml:TypedLiteral r2ml:lexicalValue="message" r2ml:datatypeID="xs:string"/>
    ///    </r2ml:arguments>
    ///  </r2ml:InvokeActionExpression>
    ///</r2ml:producedAction>
    ///</R2ML>
}
